const { app, BrowserWindow, screen, Tray, Menu, ipcMain, dialog } = require('electron');
const path = require('path');
const fs = require('fs');



let win;
let tray;

// 设置文件路径
const settingsFilePath = path.join(app.getPath('userData'), 'settings.json');
console.log('settingsFilePath',settingsFilePath)

function loadTopLevelTextHTML() {
  win = new BrowserWindow({
    width: 800,
    height: 600,
    frame: false, // 去掉窗口边框
    transparent: true, // 背景透明
    alwaysOnTop: true, // 窗口始终置顶
    fullscreen: true, // 全屏显示
    skipTaskbar: true, // 不显示在任务栏
    webPreferences: {
      contextIsolation: false, // 禁用上下文隔离
      nodeIntegration: true, // 启用 Node.js 支持
    },
  });
  win.setIgnoreMouseEvents(true);

  // const { width, height } = screen.getPrimaryDisplay().workAreaSize;
  // win.setBounds({ x: 0, y: 0, width, height });

  win.loadFile('./src/topLevelText.html');
  // 禁止鼠标事件，确保点击穿透到桌面
}

app.on('ready', () => {
  loadTopLevelTextHTML()

  createTray()

  ipcMain.handle('get-settings', () => {
    try {
      const data = fs.readFileSync(settingsFilePath, 'utf-8');
      return JSON.parse(data);
    } catch (err) {
      // 如果没有设置文件，返回默认设置
      return {};
    }
  });
  ipcMain.handle('save-settings', (_, settings) => {
    console.log('save settings 1', settings)
    console.log('save settings 2', JSON.stringify(settings, null, 2))
    fs.writeFileSync(settingsFilePath, JSON.stringify(settings, null, 2), 'utf-8');
    // 如何在这里重新渲染 loadTopLevelTextHTML 的 index.html？
    win.webContents.reload(); // 刷新页面
  });
  // 打开设置页面
  // 在html中是 ipcRenderer.invoke('open-settings');
  // win.webContents.send('open-settings')
  // ipcMain.handle('open-settings', () => {
  //   console.log('接收到打开设置页面的请求')
  // });
});

function createTray() {
  // 设置托盘图标路径
  const iconPath = path.resolve(__dirname, './assets/sleep-icon.ico'); // 请确保路径正确
  tray = new Tray(iconPath);

  // 设置托盘菜单
  const contextMenu = Menu.buildFromTemplate([
    { label: '显示主窗口', click: () => win.show() },
    {
      label: '打开设置', click: () => {
        // win.hide();
        let settingsWin = new BrowserWindow({
          width: 600,
          height: 300,
          modal: true,
          webPreferences: {
            contextIsolation: false, // 禁用上下文隔离
            nodeIntegration: true, // 启用 Node.js 支持
          }
          // 设置了parent 会同时关闭
          // parent: win,
        });
        settingsWin.loadFile('./src/settings.html');
      }
    },
    { label: '退出', click: () => app.quit() },
  ]);

  tray.setToolTip('是时候睡觉了'); // 设置悬停提示
  tray.setContextMenu(contextMenu); // 设置右键菜单

  // 点击托盘图标时的事件
  // tray.on('click', () => {
  //   // 显示或隐藏主窗口
  //   if (win.isVisible()) {
  //     win.hide();
  //   } else {
  //     win.show();
  //   }
  // });
}

app.on('window-all-closed', () => {
  app.quit();
});


